<?php
/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright 2011
 * @license    All rights reserved
 */


/**
 * Classe permettant de gerer les liens utiles
 *
 */
class lienutileSrv {

    /**
     * Fonction permettant d'avoir la liste des liens utiles par categorie
     * @return object $liste
     *
     */
    public function liste () {

        // instanciation de la factory
        $maFactory = jDao::get("commun~lienutile");
        $records   = $maFactory->getListByCategory();

        return self::groupLinkByCat($records->fetchAll());
    }

    /**
     * Fonction permettant de grouper les liens par categorie
     * @param object $_categorieLien
     * @return array $tResult
     *
     */
    public static function groupLinkByCat ($_categorieLien) {
        $tResult = array();
        if ($_categorieLien) {
        
            foreach ($_categorieLien as $k=>$item) {
                $imagePath = (is_file(JELIX_APP_WWW_PATH . PHOTO_LIEN_UTILE_PATH . $item->lien_photo)) ? PHOTO_LIEN_UTILE_PATH . $item->lien_photo : "";
                $lienIdTitre  = array("titre"=>$item->lien_titre, "id"=>$item->lien_id, "statut"=>$item->lien_statut, "lien_url"=>'http://' . $item->lien_url, "image"=>$imagePath, "desc"=>$item->lien_texte);
                $lien_titre[] = $lienIdTitre;

                if ((isset($_categorieLien[$k+1]->cat_id) && $_categorieLien[$k+1]->cat_id != $item->cat_id) || (!isset($_categorieLien[$k+1]->cat_id))) {

                    $result             = new stdClass();
                    $result->cat_name   = $item->cat_name;
                    $result->lien_liste = $lien_titre;

                    array_push($tResult, $result);
                    unset($lien_titre);
                }
            }
        }

        return $tResult;
    }

    /**
     * Fonction permettant d'initialiser un objet lienutile
     * @return object
     *
     */
    public function init () {

        return jDao::createRecord("commun~lienutile");
    }

    /**
     * Fonction permettant d'avoir un lien utile  à partir de son id
     * @param $id
     * @return object
     *
     */
    public function chargeParId ($id) {
        $maFactory = jDao::get("commun~lienutile");

        return  $maFactory->get($id);
    }

    /**
     * Fonction permettant d'ajouter un lien utile
     * @return object $lien
     *
     */
    public function ajouter ($lien) {
        // instanciation de la factory
        $maFactory = jDao::get("commun~lienutile");
        $records   = jDao::createRecord("commun~lienutile");

        $records->lien_cat_id  = $lien->lien_cat_id;
        $records->lien_url     = $lien->lien_url;
        $records->lien_titre   = $lien->lien_titre;
       
        $records->lien_texte   = $lien->lien_texte;
        $records->lien_statut  = $lien->lien_statut;

         $records->lien_photo  = self::saveUploadedImage($lien->lien_photo);

         return $maFactory->insert($records);
    }


    /**
     * Fonction permettant de modifier un lien utile
     * @return object $lien
     *
     */
    public function modifier ($lien) {

        // instanciation de la factory
        $maFactory = jDao::get("commun~lienutile");
        $records   = $maFactory->get($lien->id);

        $records->lien_cat_id  = $lien->lien_cat_id;
        $records->lien_url     = $lien->lien_url;
        $records->lien_titre   = $lien->lien_titre;
        $records->lien_photo   = ($lien->lien_photo['name'])? self::saveUploadedImage($lien->lien_photo) : $lien->photoOld;
        $records->lien_texte   = $lien->lien_texte;
        $records->lien_statut  = $lien->lien_statut;

        return $maFactory->update($records);
    }

    /**
     * Fonction permettant d'uploader une image sur le serveur
     * @param array filename
     * @return string filename
     *
     */
    public static function saveUploadedImage ($fileToUpload) {
        
        try {
            jClasses::inc('commun~uploader');

            $uploader = new uploader();
            $uploader->source  = $fileToUpload;
            $uploader->destDir = PATH_UPLOAD_LIEN_UTILE;
            $uploader->upload();

        } catch (exception $e) {
            die($e->getMessage());
        }
        
        return $fileToUpload['name'];
    }


}